// jwt 权限校验  
// jwt ： json web token ，判断接口是否有操作权限的；
const express = require("express");
const static = express.static;
const jwt = require("jsonwebtoken");
let app = express();
app.use(static(__dirname+"/static"));

app.use(express.json());
app.get("/login",(req,res)=>{
    res.sendFile(__dirname+"/views/login.html");
})

app.get("/index",(req,res)=>{
    res.sendFile(__dirname+"/views/index.html");
})


app.post("/checkUser",(req,res)=>{
    // 校验用户名和密码是否正确？
    console.log(req.body);
    // 用户名是张三  ， 密码是123；
    let {username,pwd} = req.body;
    if(username==="张三" && pwd==="123"){
        // jwt.sign(payload,秘钥,过期时间)
        let token = jwt.sign({
            myname:"hello"
        },"mysecret",{expiresIn:"2h"});

        /* 
        eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJteW5hbWUiOiJoZWxsbyIsImlhdCI6MTcxMzM0MjgxNywiZXhwIjoxNzEzMzUwMDE3fQ.ZRuILio38W-CKeg9hP-lGfsV8dqIaCXs4pvsrP9Mk0Y
        
        */
        res.json({
            info:"用户名和密码正确",
            status:1,
            token
        })
    }else{
        res.json({
            info:"用户名或者密码错误",
            status:0
        })
    }
   
    
})

// app.get("/getlist",(req,res)=>{
//     // 获取token 做校验 ，校验token是否正确 ，如果正确就返还数据，如果不正确，返还403 或者是401状态码，给错误提示；
//     let token = req.headers.authorization
//     // console.log(req.headers);
//     if(!token){
//         // 没有token 那么直接返还 401 给错误提示 
//         res.status(401).json({info:"token不存在"});
//     }else{
//         // 有token ，校验token是否正确 ，如果正确返还数据，如果不正确返还403和错误提示；
//         jwt.verify(token,"mysecret",(err,decoded)=>{
//             console.log(decoded);
//             if(err){
//                 res.status(403).json({info:"token不正确"});
//             }else{
//                 res.json([{name:"张三",age:20},{name:"李四",age:21}])
//             }
//         })
//     }
// })

let mi = function(req,res){
    // 获取token 做校验 ，校验token是否正确 ，如果正确就返还数据，如果不正确，返还403 或者是401状态码，给错误提示；
    let token = req.headers.authorization
    // console.log(req.headers);
    if(!token){
        // 没有token 那么直接返还 401 给错误提示 
        res.status(401).json({info:"token不存在"});
    }else{
        // 有token ，校验token是否正确 ，如果正确返还数据，如果不正确返还403和错误提示；
        jwt.verify(token,"mysecret",(err,decoded)=>{
            console.log(decoded);
            if(err){
                res.status(403).json({info:"token不正确"});
            }else{
                res.json([{name:"张三",age:20},{name:"李四",age:21}])
            }
        })
    }
}

app.use(mi);

app.listen(8989);